The present invention relates generally to the field of computer applications development, and in particular to methods and apparatus for providing applications with the ability to support intermittent connectivity processing.
The typical business client platform is, increasingly, a mobile platform (e.g., a laptop or notebook computer) rather than a desktop system. Despite this trend, enterprise applications software (e.g., server-based corporate business systems) are often written with mobile support as little more than an afterthought. The unfortunate result is that business users often can only be fully productive when actually connected to their home office computer system.
Recent advances in connectivity options for mobile platforms have improved the utility of such computers considerably, but users who access enterprise systems through mobile computers still face at least two significant problems. First, many recently developed connectivity solutions are bandwidth-constrained, unreliable, or both. Second, there are many environments in which connectivity of any kind is simply not a viable option (e.g., while on an airplane).
A developer faced with the task of supporting intermittent connectivity to an enterprise application typically has several options, including: (1) adopt an entire communications database/workgroup approach, (2) use a lightweight database application with synchronization capability, (3) develop a custom solution, or (4) use message-oriented middleware (i.e., message queuing). All of these approaches generally require a significant investment in time and require a sufficient level of expertise on the part of the developer. Also, each option may best fit only certain types of applications. Moreover, as an application evolves over time to incorporate new features, it may be necessary to use several of the above-identified options, or it may be necessary to upgrade support in a particular option. In addition, to mention just a few specific drawbacks of these approaches, option (1) requires a significant investment in training and expertise, and tends to use special development tools that closely tie an application to a single product (e.g., communications database/workgroup application, lightweight database application with synchronization capability); option (3) is extremely expensive, inefficient and time consuming, and usually involves very high support costs; and options (2) and (3) generally require either tying an application to a particular vendor""s product or using a standard interface that limits the application to using the vendor""s product in an LCD (least common denominator) fashion (i.e., sacrificing functionality and features for the sake of conforming to a standard).
Set against the backdrop of these challenges facing developers desiring to make their enterprise applications more xe2x80x9cmobile-aware,xe2x80x9d there has been a marked trend in the field of software development towards more xe2x80x9cdeveloper-friendlyxe2x80x9d programming languages. This trend is perhaps best exemplified by the rapid proliferation of the Java programming language, developed by Sun Microsystems, Inc. The Java programming language has become the language of choice for many application developers because of its relative ease-of-use, support for object-oriented programming techniques, support for networking, and general independence from architectural requirements.
Although the Java programming language is often used to develop enterprise applications, Java environments do not currently offer common, easy-to-use apparatus and methods for enabling such enterprise applications to support detached (i.e., disconnected) computing for mobile users. Currently, in order for a local instance of an enterprise application to be used in a disconnected session, non-trivial special code must be developed to write session information to disk and then synchronize with the enterprise application once the mobile unit is reconnected to the home office system. Such efforts are typically expensive, often unreliable, and usually involve unacceptably extensive support.
In view of the foregoing, there is a need for easy-to-use methods and apparatus for providing applications with the ability to support intermittent connectivity processing. This need and others are addressed by embodiments of the claimed invention, including but not limited to the embodiments expressly described below.
The present invention relates generally to the field of computer applications development, and in particular to methods and apparatus for providing applications with the ability to support intermittent connectivity processing. In accordance with one particular embodiment of the claimed invention, as disclosed herein, an application development tool is configured for providing intermittent connectivity support in an application that uses distributed objects. The application development tool includes an intermittent connectivity framework having program code for queuing method calls to a distributed object, as well as an intermittent connectivity component generator having program code for converting an existing interface for a distributed object into an intermittent connectivity component configured to forward method calls to the intermittent connectivity framework for queuing.